package qimen

var (
	// ZHI_HIDE_GAN = LunarUtil.ZHI_HIDE_GAN
	// WU_XING_GAN = LunarUtil.WU_XING_GAN
	// WU_XING_ZHI = LunarUtil.WU_XING_ZHI

	GanIdx = map[string]int{
		"甲": 1, "乙": 2, "丙": 3, "丁": 4, "戊": 5, "己": 6, "庚": 7, "辛": 8, "壬": 9, "癸": 10,
	}
	ZhiIdx = map[string]int{
		"子": 1, "丑": 2, "寅": 3, "卯": 4, "辰": 5, "巳": 6, "午": 7, "未": 8, "申": 9, "酉": 10, "戌": 11, "亥": 12,
	}
	GanZhiWuXing = map[string]string{
		"甲": "木", "乙": "木", "丙": "火", "丁": "火", "戊": "土", "己": "土", "庚": "金", "辛": "金", "壬": "水", "癸": "水",
		"子": "水", "丑": "土", "寅": "木", "卯": "木", "辰": "土", "巳": "火", "午": "火", "未": "土", "申": "金", "酉": "金", "戌": "土", "亥": "水",
	}
	WuXingKe = map[string]string{
		"金": "木", "木": "土", "土": "水", "水": "火", "火": "金",
	}
	WuXingSheng = map[string]string{
		"金": "水", "水": "木", "木": "火", "火": "土", "土": "金",
	}
	YinYang = map[string]string{
		"甲": "阳", "乙": "阴", "丙": "阳", "丁": "阴", "戊": "阳", "己": "阴", "庚": "阳", "辛": "阴", "壬": "阳", "癸": "阴",
		"子": "阳", "丑": "阴", "寅": "阳", "卯": "阴", "辰": "阳", "巳": "阴", "午": "阳", "未": "阴", "申": "阳", "酉": "阴", "戌": "阳", "亥": "阴",
	}
)

// KongWang 旬空亡
var KongWang = map[string][]string{
	"甲子": {"戌", "亥"},
	"甲戌": {"申", "酉"},
	"甲申": {"午", "未"},
	"甲午": {"辰", "巳"},
	"甲辰": {"寅", "卯"},
	"甲寅": {"子", "丑"},
}

// ZhiGong9 支在洛书九宫位
var ZhiGong9 = map[string]int{
	"子": 1, "丑": 8, "寅": 8, "卯": 3, "辰": 4, "巳": 4,
	"午": 9, "未": 2, "申": 2, "酉": 7, "戌": 6, "亥": 6,
}

var (
	//LunarUtil.SHI_SHEN

	ShiShenShort = map[string]string{
		"比肩": "比", "劫财": "劫", "食神": "食", "伤官": "伤",
		"偏财": "才", "正财": "财", "七杀": "杀", "正官": "官",
		"偏印": "枭", "正印": "印",
	}
	Relation6 = map[string]string{
		"比肩": "兄弟", "劫财": "兄弟", "食神": "子孙", "伤官": "子孙",
		"偏财": "妻财", "正财": "妻财", "七杀": "官鬼", "正官": "官鬼",
		"偏印": "父母", "正印": "父母",
	}
	Relation6Short = map[string]string{
		"兄弟": "兄", "子孙": "子", "妻财": "财", "官鬼": "官", "父母": "父",
	}
	Relation6WuXing = map[string]string{
		"金金": "兄弟", "金水": "子孙", "金木": "妻财", "金火": "官鬼", "金土": "父母",
		"水金": "父母", "水水": "兄弟", "水木": "子孙", "水火": "妻财", "水土": "官鬼",
		"木金": "官鬼", "木水": "父母", "木木": "兄弟", "木火": "子孙", "木土": "妻财",
		"火金": "妻财", "火水": "官鬼", "火木": "父母", "火火": "兄弟", "火土": "子孙",
		"土金": "子孙", "土水": "妻财", "土木": "官鬼", "土火": "父母", "土土": "兄弟",
	}
)

func RelationGanZhi(gz1, gz2 string) string {
	return Relation6WuXing[GanZhiWuXing[gz1]+GanZhiWuXing[gz2]]
}

// HeGan 天干五合（有情之克中最有情的5个，甲己合，乙庚合，丙辛合，丁壬合，戊癸合）
var HeGan = map[string]string{
	"甲": "己", "己": "甲", "乙": "庚", "庚": "乙", "丙": "辛",
	"辛": "丙", "丁": "壬", "壬": "丁", "戊": "癸", "癸": "戊",
}

// HeZhi 地支六合（子丑合土，寅亥合木，卯戌合火，辰酉合水，巳申合金，午未合火土）
var HeZhi = map[string]string{
	"子": "丑", "丑": "子", "寅": "亥", "亥": "寅", "卯": "戌", "戌": "卯",
	"辰": "酉", "酉": "辰", "巳": "申", "申": "巳", "午": "未", "未": "午",
}

// ChongZhi 地支六冲（子午冲，丑未冲，寅申冲，卯酉冲，辰戌冲，巳亥冲）
var ChongZhi = map[string]string{
	"子": "午", "午": "子", "丑": "未", "未": "丑", "寅": "申", "申": "寅",
	"卯": "酉", "酉": "卯", "辰": "戌", "戌": "辰", "巳": "亥", "亥": "巳",
}

// He3Zhi 地支三合（申子辰合水，寅午戌合，亥卯未合，巳酉丑合）
var (
	// 大六壬中 孟过去,仲现在,季未来
	heWater = [3]string{"申", "子", "辰"}
	heFire  = [3]string{"寅", "午", "戌"}
	heWood  = [3]string{"亥", "卯", "未"}
	heMetal = [3]string{"巳", "酉", "丑"}
	He3Zhi  = map[string][3]string{
		"子": heWater, "申": heWater, "辰": heWater,
		"寅": heFire, "午": heFire, "戌": heFire,
		"亥": heWood, "卯": heWood, "未": heWood,
		"巳": heMetal, "酉": heMetal, "丑": heMetal,
	}
	HeWuXing = map[string]string{
		"子": "水", "申": "水", "辰": "水",
		"寅": "火", "午": "火", "戌": "火",
		"亥": "木", "卯": "木", "未": "木",
		"巳": "金", "酉": "金", "丑": "金",
	}
)

// WuXingGe 五行纯格(如三合金为从革, 三合土或三刑土为稼穑)
var WuXingGe = map[string]string{
	"金": "从革", "水": "润下", "木": "曲直", "火": "炎上", "土": "稼穑",
}

// Hui3Zhi 地支三会（亥子丑会水，寅卯辰会木，巳午未会火，申酉戌会金）
var (
	Hui3Zhi = map[string]string{
		"亥": "水", "子": "水", "丑": "水",
		"寅": "木", "卯": "木", "辰": "木",
		"巳": "火", "午": "火", "未": "火",
		"申": "金", "酉": "金", "戌": "金",
	}
	HuiWuXing = map[string]string{
		"亥": "水", "子": "水", "丑": "水",
		"寅": "木", "卯": "木", "辰": "木",
		"巳": "火", "午": "火", "未": "火",
		"申": "金", "酉": "金", "戌": "金",
	}
)

// XingZhi 地支相刑(大六壬三刑用单向刑,如丑刑未,未刑巳,巳刑申,申刑子,子刑辰,辰刑丑)
var XingZhi = map[string]string{
	"子": "卯", "丑": "戌", "寅": "巳", "卯": "子", "辰": "辰", "巳": "申",
	"午": "午", "未": "丑", "申": "寅", "酉": "酉", "戌": "未", "亥": "亥",
}

// Horse 驿马方(申子辰见寅 寅午戌见申 巳酉丑见亥 亥卯未见巳)
var Horse = map[string]string{
	"申": "寅", "子": "寅", "辰": "寅",
	"寅": "申", "午": "申", "戌": "申",
	"巳": "亥", "酉": "亥", "丑": "亥",
	"亥": "巳", "卯": "巳", "未": "巳",
}

var (
	ZhangSheng12 = map[string]map[string]string{
		"甲": {"亥": "长生", "子": "沐浴", "丑": "冠带", "寅": "临官", "卯": "帝旺", "辰": "衰", "巳": "病", "午": "死", "未": "墓", "申": "绝", "酉": "胎", "戌": "养"},
		"乙": {"午": "长生", "巳": "沐浴", "辰": "冠带", "卯": "临官", "寅": "帝旺", "丑": "衰", "子": "病", "亥": "死", "戌": "墓", "酉": "绝", "申": "胎", "未": "养"},
		"丙": {"寅": "长生", "卯": "沐浴", "辰": "冠带", "巳": "临官", "午": "帝旺", "未": "衰", "申": "病", "酉": "死", "戌": "墓", "亥": "绝", "子": "胎", "丑": "养"},
		"丁": {"酉": "长生", "申": "沐浴", "未": "冠带", "午": "临官", "巳": "帝旺", "辰": "衰", "卯": "病", "寅": "死", "亥": "墓", "戌": "绝", "子": "胎", "丑": "养"},
		"戊": {"寅": "长生", "卯": "沐浴", "辰": "冠带", "巳": "临官", "午": "帝旺", "未": "衰", "申": "病", "酉": "死", "戌": "墓", "亥": "绝", "子": "胎", "丑": "养"},
		"己": {"酉": "长生", "申": "沐浴", "未": "冠带", "午": "临官", "巳": "帝旺", "辰": "衰", "卯": "病", "寅": "死", "亥": "墓", "戌": "绝", "子": "胎", "丑": "养"},
		"庚": {"巳": "长生", "午": "沐浴", "未": "冠带", "申": "临官", "酉": "帝旺", "子": "衰", "丑": "病", "寅": "死", "亥": "墓", "戌": "绝", "卯": "胎", "辰": "养"},
		"辛": {"子": "长生", "亥": "沐浴", "戌": "冠带", "酉": "临官", "申": "帝旺", "未": "衰", "午": "病", "巳": "死", "辰": "墓", "卯": "绝", "寅": "胎", "丑": "养"},
		"壬": {"申": "长生", "酉": "沐浴", "戌": "冠带", "亥": "临官", "子": "帝旺", "丑": "衰", "寅": "病", "卯": "死", "辰": "墓", "巳": "绝", "午": "胎", "未": "养"},
		"癸": {"卯": "长生", "寅": "沐浴", "丑": "冠带", "子": "临官", "亥": "帝旺", "戌": "衰", "酉": "病", "申": "死", "未": "墓", "午": "绝", "巳": "胎", "辰": "养"},
	}
	ZhangSheng58 = map[string]map[string]string{
		"甲": ZhangSheng12["甲"],
		"乙": ZhangSheng12["甲"],
		"丙": ZhangSheng12["丙"],
		"丁": ZhangSheng12["丙"],
		"戊": ZhangSheng12["丙"], //命理土用火长生
		"己": ZhangSheng12["丙"], //命理土用火长生
		"庚": ZhangSheng12["庚"],
		"辛": ZhangSheng12["庚"],
		"壬": ZhangSheng12["壬"],
		"癸": ZhangSheng12["癸"],
	}
	ZhangSheng56 = map[string]map[string]string{
		"甲": ZhangSheng12["甲"],
		"乙": ZhangSheng12["甲"],
		"丙": ZhangSheng12["丙"],
		"丁": ZhangSheng12["丙"],
		"戊": ZhangSheng12["壬"], //六爻土用水长生
		"己": ZhangSheng12["壬"], //六爻土用水长生
		"庚": ZhangSheng12["庚"],
		"辛": ZhangSheng12["庚"],
		"壬": ZhangSheng12["壬"],
		"癸": ZhangSheng12["癸"],
	}
)

// GanRootVal 干支根气
// 甲木根:亥(长生)、寅(临官)、卯(帝旺)、辰(衰)、未(墓)。
// 乙木根:辰(冠带)、卯(临官)、寅(帝旺)、未(养)。
// 丙火根:寅(长生)、巳(临官)、午(帝旺)、未(衰)、戌(墓)。
// 丁火根:未(冠带)、午(临官)、巳(帝旺)、戌(养)。
// 戊土根:戌未(强)、已午辰(中)、寅丑(弱)。
// 己土根:未戌(强)、午巳丑(中)、辰寅(弱),
// 庚金根:巳(长生)、申(临官)、酉(帝旺)、戌(衰)、丑(墓)。
// 辛金根:戌(冠带)、酉(临官)、申(帝旺)、丑(弄)。
// 王水根:申(长生)、亥(临官)、子(帝旺)、丑(衰)、辰(墓)。
// 癸水根:丑(冠带)、子(临官)、亥(帝旺)、辰(养)
var GanRootVal = map[string]map[string]int{
	"甲": {"子": 0, "丑": 0, "寅": 12, "卯": 10, "辰": 8, "巳": 0, "午": 0, "未": 2, "申": 0, "酉": 0, "戌": 0, "亥": 2},
	"乙": {"子": 0, "丑": 0, "寅": 10, "卯": 12, "辰": 8, "巳": 0, "午": 0, "未": 2, "申": 0, "酉": 0, "戌": 0, "亥": 0},
	"丙": {"子": 0, "丑": 0, "寅": 2, "卯": 0, "辰": 0, "巳": 12, "午": 10, "未": 8, "申": 0, "酉": 0, "戌": 2, "亥": 0},
	"丁": {"子": 0, "丑": 0, "寅": 0, "卯": 0, "辰": 0, "巳": 10, "午": 12, "未": 8, "申": 0, "酉": 0, "戌": 2, "亥": 0},
	"戊": {"子": 0, "丑": 2, "寅": 3, "卯": 0, "辰": 8, "巳": 8, "午": 8, "未": 10, "申": 0, "酉": 0, "戌": 10, "亥": 0},
	"己": {"子": 0, "丑": 8, "寅": 2, "卯": 0, "辰": 2, "巳": 8, "午": 8, "未": 10, "申": 0, "酉": 0, "戌": 10, "亥": 0},
	"庚": {"子": 0, "丑": 2, "寅": 0, "卯": 0, "辰": 0, "巳": 2, "午": 0, "未": 0, "申": 12, "酉": 10, "戌": 8, "亥": 0},
	"辛": {"子": 0, "丑": 2, "寅": 0, "卯": 0, "辰": 0, "巳": 0, "午": 0, "未": 0, "申": 10, "酉": 12, "戌": 8, "亥": 0},
	"壬": {"子": 10, "丑": 8, "寅": 0, "卯": 0, "辰": 0, "巳": 0, "午": 0, "未": 0, "申": 2, "酉": 0, "戌": 0, "亥": 12},
	"癸": {"子": 12, "丑": 8, "寅": 0, "卯": 0, "辰": 0, "巳": 0, "午": 0, "未": 0, "申": 0, "酉": 0, "戌": 0, "亥": 10},
}
